'''
FastAPI 提供的 Cookie
Cookie 是 Path 和 Query 的“姐妹”类
它也继承自相同的通用 Param 类
注意：从 fastapi 导入 Query、Path、Cookie 等时，这些实际上是返回特殊类的函数
'''
import uvicorn
from fastapi import FastAPI, Query, Path, Cookie
from typing import Optional

app = FastAPI()


@app.get("/items")
async def read_items(name: Optional[str] = Cookie(None)):
    return {"name": name}


'''
    重点：函数参数的命名很重要，需要和 Cookie 的 Name 对应上才能拿到对应的 Cookie 哦
'''

# 返回 Set-Cookie

# 在正常的网站中，如果登录成功或者鉴权成功，服务器返回的响应会带上 Set-Cookie，表示浏览器需要设置的一些 Cookie

# 那么 FastAPI 是如何返回带有 Set-Cookie 的响应呢?


from fastapi.responses import JSONResponse


@app.get("/cookie/")
def Login():
    content = {"message": "yy_cookie"}
    response = JSONResponse(content=content)
    response.set_cookie(key="username", value="zlkt")
    return response




if __name__ == '__main__':
    uvicorn.run(app='main:app', host='127.0.0.1', port=8000, reload=True, debug=True)
